#include <iostream>
using namespace std;
//int i=0;
int max(int i,int j) 
{
	return i>j?i:j;
}
int  LCTLength(int *X,int *Z,int m,int n)
{
	int **f=new int *[m+1];
	int i,j;
	for(i=0;i<=m;i++)
	{
		f[i]=new int[n+1];
		//f[i][0]=0;
	}
	for(i=0;i<=m;i++)
	{
		for(j=0;j<=n;j++)
		{
			f[i][j]=0;
		}
	}
	
	for (i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		{
			if (X[i]==Z[j])
			{
				f[i][j]=f[i-1][j-1]+1;
				cout<<X[i]<<endl;
			}
			else
			{
				f[i][j]=max(f[i-1][j],f[i][j-1]);
			}
		}
	}
	return f[m][n];
}

void main()
{
	int X[]={0,7,8};
	int Z[]={0,8,7};
	int m=2;
	int n=2;
	cout<<LCTLength(X,Z,m,n);
}
